5779
3522
Zastanawiałem się, czy spacje i komentarze spowalniają JavaScript? Wykonuję atak brutalnej siły, który zajmuje trochę czasu (30 sekund). Usunięcie białych znaków nie powoduje znaczącego wzrostu szybkości, ale myślę, że przeglądarka musi po prostu więcej analizować.
Czy więc ma sens usuwanie niepotrzebnych spacji i komentarzy, aby przyspieszyć całość? 
Ludzie zwykle używają minimalizatorów, aby zmniejszyć ROZMIAR skryptu, aby poprawić szybkość pobierania, zamiast robić jakąkolwiek różnicę w szybkości parsowania skryptu.
Białe znaki i komentarze będą miały niewielki wpływ na to, jak długo trwa wykonanie przeglądarki, ponieważ parser musi sprawdzić, czy jest to biały znak, czy komentarz, ale w rzeczywistości będzie to tak minutowe przy obecnej mocy obliczeniowej, że byłoby to niemożliwe zauważyć wpływ.
ROZMIAR jest jednak nadal ważny, nawet przy dużej przepustowości dostępnej w naszym świecie Internetu szerokopasmowego.
|
Spacje i komentarze zwiększają rozmiar pliku JavaScript, co spowalnia faktyczne pobieranie pliku z serwera - minifikacja to proces usuwania niepotrzebnych znaków z pliku JavaScript, aby był mniejszy i łatwiejszy do pobrania.
Ponieważ jednak wspomina się o ataku brutalnej siły, wąskim gardłem prawdopodobnie nie jest pobieranie. Spróbuj użyć programu profilującego, aby dowiedzieć się, co Cię spowalnia.
|
Minimalizacja, łączenie i gzipowanie zasobów zawsze ma sens, aby zmniejszyć obciążenie serwera.
Minifikacja to czynność, do której się odnosisz, polegająca na usunięciu niepotrzebnych spacji i komentarzy w celu zmniejszenia szybkości pobierania.
Łączenie najprawdopodobniej pokaże jeszcze większy wzrost szybkości renderowania strony; jest to czynność polegająca na scaleniu wszystkich plików javascript w jeden i wszystkich plików css w jeden (można to również zrobić dla większości obrazów, ale zadanie to wymaga trochę więcej pracy). Ma to na celu zmniejszenie liczby żądań, jakie przeglądarka musi wysyłać do serwera, aby móc wyświetlić stronę.
GZipping to czynność polegająca na dalszej kompresji danych w formacie spakowanym do przeglądarek, które wskazują, że akceptują takie dane. To dodatkowo zmniejsza rozmiar, ale dodaje dodatkowe obciążenie pracą na obu końcach. Prawdopodobnie zobaczysz z tego zysk netto.
W zależności od środowiska, w którym pracujesz, istnieją różne komponenty, które Ci w tym pomogą, zwykle obejmując wszystkie powyższe elementy za jednym razem.
Czas potrzebny na pobranie kodu z serwera ma bezpośredni wpływ na czas renderowania strony. JavaScript blokuje, co oznacza, że ​​blok JS uniemożliwi dalsze renderowanie, dopóki blok nie zostanie całkowicie wykonany. W związku z tym wpływ będzie miało miejsce, w którym umieścisz pliki javascript (tj. W którym momencie procesu renderowania będą one wymagane), liczba żądań potrzebnych do całkowitego pobrania i ilość danych do pobrania. po załadowaniu strony, tak jak wygląda to dla użytkownika.
Gdy przeglądarka przeanalizuje Twój kod, czy to javascript, css czy html, utworzy wewnętrzne reprezentacje części, którą musi pamiętać, a faktyczne formatowanie nie będzie już miało na nią wpływu.
|
Nie sądzę, aby białe znaki w kodzie js spowalniały jego wykonanie. O ile rozumiem, interpreter javascript usuwa wszystkie komentarze i zbędne spacje przed przetwarzaniem. Może to jednak wpływać na czas pobierania, a tym samym na czas ładowania strony internetowej.
Zajrzyj tutaj, aby uzyskać dodatkowe informacje.
|
Ma to niewielki lub żaden wpływ na rzeczywistą prędkość przetwarzania, jednak ...
Mniejszy rozmiar => mniej przepustowości => mniejsze koszty => ??? => zysk!
|
Twoja odpowiedź
StackExchange.ifUsing ("editor", function () {
StackExchange.using ("externalEditor", function () {
StackExchange.using ("snippets", function () {
StackExchange.snippets.init ();
});
});
}, "fragmenty kodu");
StackExchange.ready (function () {
var channelOptions = {
tagi: „” .split („”),
id: "1"
};
initTagRenderer ("". split (""), "" .split (""), channelOptions);
StackExchange.using ("externalEditor", function () {
// Muszę uruchomić edytor po fragmentach, jeśli fragmenty są włączone
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using ("snippets", function () {
createEditor ();
});
}
else {
createEditor ();
}
});
function createEditor () {
StackExchange.prepareEditor ({
useStacksEditor: false,
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: prawda,
przyrostek: "",
imageUploader: {
brandingHtml: „Obsługiwane przez \ u003ca href = \" https: //imgur.com/ \ "\ u003e \ u003csvg class = \" ikona-svg \ "width = \" 50 \ "height = \" 18 \ "viewBox = \ "0 0 50 18 \" fill = \ "none \" xmlns = \ "http: //www.w3.org/2000/svg \" \ u003e \ u003cpath d = \ "M46.1709 9.17788C46.1709 8.26454 46.2665 7,94324 47,1084 7,58816C47.4091 7,46349 47,7169 7,36433 48,0099 7,26993C48.9099 6,97997 49,672 6,73443 49,672 5,93063C49.672 5,22043 48,9832 4,61182 48,1414 4,61182C47.4335 4,61182 46,7256 4,9256,43,43354,61182 46,7256 4,9168,60 468,56 43.1481 6.59048V11.9512C43.1481 13.2535 43.6264 13.8962 44.6595 13.8962C45.6924 13.8962 46,1709 13.2535 46,1709 11.9512V9.17788Z \ "/ \ u003e \ u003cpath d = \" M32.492 10.1419C4184184.492 1448.1709 1448.1709 41,5985 12,6954 41,5985 10,1419V6,59049C41,5985 5,28821 41,1394 4,6623240,1061 4,66232C39.0732 4,66232 38,5948 5,28821 38,5948 6,59049V9,60062C38,5948 10,8521 38,2696 11,5455 37,0451 11,5455C35.8209 11,5455 35,4954 10,8521 35,4954 9,60062C38,5948 10,8521 38,2696 11,5455 37,0451 11,5455C35.8209 11,5455 35,4954 10,8521 35,4954 9,60062V6,59049V9,60062C38,5948 10,8521 38,2696 11,5455 37,0451 11,5455C35.8209 11,5455 35,4954 10,8521 35,4954 9,60062V6,59049C35,4954 \ u003d "/ \ u003e \ u003cpath fill-rule = \" evenodd \ "clip-rule = \" evenodd \ "d = \" M25.6622 17.6335C27.8049 17.6335 29.3739 16.9402 30.2537 15.6379C30.8468 14.7755 30.9615 13.5579 30.9615 11.9512V. 59049C30.9615 5,28821 4,66231 29,4502 30,4833 28,4555 4,94978 4.66231C28.9913 4,66231 28,1109 26,7335 4,56087 5.50789C27.499 4,86533 25,7005 21,0134 6,57349 4.56087C23.1369 4,56087 21,0134 11,9852 23,003 13,913 9.27932C21.0134 25,3754 13.913C26.5612 13,913 27,4607 13,4902 28,1109 12.6616C28. 1109 12,7229 28.1161 12,7799 28,121 12,8346C28.1256 12,8854 28.1301 12.9342 28.1301 12.983C28.1301 14.4373 27.2502 15.2321 25.777 15.2321C24.8349 15.2321 24.1352 14.9821 23.5661 14.7787C28.1301 14.4373 27.2502 15.2321 25.777 15.2321C24.8349 15.2321 24.1352 14.9821 23.5661 14.7787C2.418.523.114.7787C22.5872.122.5762.124.5872C 18 21,2429 15,0123 21,2429 15.6887C21.2429 16.7375 22.9072 17.6335 25.6622 17.6335ZM24.1317 9.27932C24.1317 7.94324 24.9928 7.09766 26.1024 7.09766C27.2119 7.09766 28.0918 7.94324 28.0918335ZM24.1317 9.27932C24.1317 7.94324 24.9928 7.09766 26.1024 7.09766 C27.2119 7.09766 28.0918 7.94324 28.0918335ZM24.1317 \ "/ \ u003e \ u003cpath d = \" M16.8045 11,9512C16.8045 13,2535 17,2637 13,8962 18,2965 13,8962C19.3298 13,8962 19,8079 13,2535 19,8079 11,9512V8,12928C19.8079 5,82936 18,4879 4,6282866C6,813,82936 18,4879 4,62866C666,813,8293,6879 4,62866C 6,8962C19,3296 .653 5,05154 11,6581 4,62866 10,3573 4,62866C9.34336 4,62866 8,57809 4,89931 7,9466 5,5079C7,58314 4,9328 7,10506 4,66232 6,51203 4,66232C5,47873 4,66232 5,00066 5,28821 5,4336 6,59049V11,9512C5,0001 1332,83 8,05,83 8,05,25 1332,83 8,05,25 1332,83 8,05 6,25,5136,25 8,06,25,5132 8,05 6,25 8,06,25,5132 8,05 6,25 8,05 8,05 6,25 1362 8,05 8,05 6,25 1362 8,05 .90741C8.0232 7.58817 8.44431 6.91179 9.53458 6.91179C10.5104 6.91179 10.893 7.58817 10.893 8.94108V11.9512C10.893 13.2535 11.3711 13.8962 12.4044 13.8962C13.4375 13.8962 13.915 7 13,2535 13,9157 11,9512V8.90741C13.9157 7,58817 14,3365 6,91179 15,4269 6,91179C16,4027 6,91179 16,8045 7,58817 16,8045 8,94108V11,9512Z \ "/ \ u003e \ u003cpath d = \" M331675 6,5903,8662,8662 4,6662. 791758 4,66232 0,313354 5,28821 0,313354 6,59049V11,9512C0,313354 13,2535 0,791758 13,8962 1,82471 13,8962C2,85798 13,8962 3,31675 13,2535 3,31675 11,9512V6,59049Z \ "/ \ u003e \ u003cpath112C15 0 \ u003cpath1 0,48297 d20 = 0,41,80. C0 2,87869 0,822846 3,57676 1,87209 3,57676C2,90056 3,57676 3,7234 2,87869 3,7234 1,98861C3,7234 1,1159 2,90056 0,400291 1,87209 0,400291Z \ "fill = \" # 1BB76E \ "/ \ u003e \ u003c / sve \ u003c / sve \ u003c / sve \ u003c / sve \ u003c / sve \ u003c / sve \
contentPolicyHtml: "Wkład użytkowników licencjonowany na mocy \ u003ca href = \" https: //stackoverflow.com/help/licensing \ "\ u003ecc by-sa \ u003c / a \ u003e \ u003ca href = \" https://stackoverflow.com / legal / content-policy \ "\ u003e (polityka treści) \ u003c / a \ u003e",
allowUrls: true
},
onDemand: prawda,
discardSelector: ".discard-answer"
, natychmiastShowMarkdownHelp: true, enableTables: true, enableSnippets: true
});
}
});
Dziękujemy za przesłanie odpowiedzi na temat Stack Overflow!
Pamiętaj, aby odpowiedzieć na pytanie. Podaj szczegóły i udostępnij swoje badania!
Ale unikaj…
Proszenie o pomoc, wyjaśnienia lub odpowiadanie na inne odpowiedzi.
Wygłaszanie oświadczeń na podstawie opinii; poprzyj je referencjami lub osobistym doświadczeniem.
Aby dowiedzieć się więcej, zapoznaj się z naszymi wskazówkami dotyczącymi pisania świetnych odpowiedzi.
Wersja robocza zapisana
Wersja robocza odrzucona
Zarejestruj się lub zaloguj
StackExchange.ready (function () {
StackExchange.helpers.onClickDraftSave ('# login-link');
});
Zarejestruj się za pomocą Google
Zarejestruj się za pomocą Facebooka
Zarejestruj się przy użyciu adresu e-mail i hasła
Zatwierdź
Opublikuj jako gość
Nazwa
E-mail
Wymagane, ale nigdy nie pokazywane
StackExchange.ready (
function () {
StackExchange.openid.initPostLogin ('. New-post-login', 'https% 3a% 2f% 2fstackoverflow.com% 2fquestions% 2f4423553% 2fdo-space-comments-slow-javascript-down% 23new-answer', 'question_page' );
}
);
Opublikuj jako gość
Nazwa
E-mail
Wymagane, ale nigdy nie pokazywane
Opublikuj swoją odpowiedź
Odrzucać
Klikając „Opublikuj odpowiedź”, akceptujesz nasze warunki korzystania z usługi, politykę prywatności i politykę dotyczącą plików cookie
Nie szukasz odpowiedzi? Przeglądaj inne pytania otagowane javascript lub zadaj własne pytanie.